// immer是一个第三方模块，可让您以更方便的方式处理不可变状态
// 深拷贝，如果数据量太大，性能下降，我们修改了一个数据，但是拷贝了一堆数据
// 相对于深拷贝来说，它使拷贝相对便宜，不需要复制数据树的未更改部分，并且在内存中与相同状态的旧版本共享
import produce from 'immer'
import { AnyAction } from 'redux'

import * as types from '/@/redux/constant'
import { ThemeState } from '/@/redux/interface'


const themeState: ThemeState = {
    isDark: false
}


// theme reducer
const theme = (state: ThemeState = themeState, action: AnyAction) => {
    produce(state, (draftState) => {
        switch (action.type) {
            case types.SET_THEME:
                draftState.isDark = action.isDark
                break
            default:
                return draftState
        }
    })
}

export default theme